home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS04.ADF / idemo / demomenu.c next >
C/C++ Source or Header  |  1985-10-26  |  23KB  |  777 lines

  1. /****************************************************************
  2. *                                                               *
  3. * Copyright 1985, Commodore Amiga Inc.  All rights reserved.    *
  4. * No part of this program may be reproduced, transmitted,       *
  5. * transcribed, stored in retrieval system, or translated into   *
  6. * any language or computer language, in any form or by any      *
  7. * means, electronic, mechanical, magnetic, optical, chemical,   *
  8. * manual or otherwise, without the prior written permission of  *
  9. * Commodore Amiga Incorporated, 983 University Ave, #D          *
  10. * Los Gatos, CA 95030                                           *
  11. *                                                               *
  12. ****************************************************************/
  13.  
  14. /*** demomenu.c ***/
  15.  
  16. /*****************************************************************************
  17.  *
  18.  * INTUITION Test Suite -- menu structures
  19.  *
  20.  * =Robert J. Mical=
  21.  * 28 April 1985
  22.  * (created:  31 January 1985)
  23.  *
  24.  * At one time or another, this program has tested all of the INTUITION 
  25.  * features, and sometimes has tested even the limits of my patience.
  26.  * 
  27.  * CONFIDENTIAL and PROPRIETARY
  28.  * Copyright (C) 1985, COMMODORE-AMIGA, INC.
  29.  * All Rights Reserved
  30.  *
  31.  ****************************************************************************/
  32.  
  33.  
  34. #include "idemoall.h"
  35.  
  36. extern struct TextAttr TestFont;
  37. extern struct TextAttr TopazSixty;
  38.  
  39.  
  40. /* ======================================================================== */
  41. /* === Menu Demo Data ===================================================== */
  42. /* ======================================================================== */
  43.  
  44. /* this is the eyeball image displayed as one of the SubItems */
  45. USHORT EyeData[] =
  46.     {
  47.     0xFFFF, 0xFFC0, 0xFFFF, 0xFFFF,
  48.     0xFFFF, 0xFC00, 0x3FFF, 0xFFFF,
  49.     0xFFFF, 0xE000, 0x0FFF, 0xFFFF,
  50.     0xFFFF, 0x8000, 0x03FF, 0xFFFF,
  51.     0xFFFF, 0x0000, 0x00FF, 0xFFFF,
  52.     0xFFFF, 0x00C3, 0x007F, 0xFFFF,
  53.     0xFFFE, 0x0301, 0xF03F, 0xFFFF,
  54.     0xFFF8, 0x0E0E, 0x7C3F, 0xFFFF,
  55.     0xFFF0, 0x381F, 0x3E1F, 0xFFFF,
  56.     0xFFF0, 0x703F, 0x9F8F, 0xFFFF,
  57.     0xEFE1, 0xF03F, 0x9FCF, 0xFFFF,
  58.     0xDFE1, 0xE03F, 0x8FE7, 0xFFFF,
  59.     0x9FC7, 0xE01F, 0x0FF0, 0x3FFF,
  60.     0x3F8F, 0xC00E, 0x07F8, 0x1FFF,
  61.     0x1F0F, 0xC000, 0x07FC, 0x3FFF,
  62.     0x8E1F, 0xE000, 0x0FF9, 0xFFFF,
  63.     0x803F, 0xE000, 0x0FFB, 0xFFFF,
  64.     0xC0FF, 0xF000, 0x1FF3, 0xFFFF,
  65.     0xFE3F, 0xF000, 0x1FF7, 0xFFFF,
  66.     0xFF9F, 0xF800, 0x3FE7, 0xFFFF,
  67.     0xFFCF, 0xFE00, 0xFFCF, 0xFFFF,
  68.     0xFFE7, 0xFF80, 0xFF9F, 0xFFFF,
  69.     0xFFF3, 0xFFFF, 0xFF3F, 0xFFFF,
  70.     0xFFF9, 0xFFFF, 0xFC7F, 0xFFFF,
  71.     0xFFFC, 0x7FFF, 0xF1FF, 0xFFFF,
  72.     0xFFFF, 0x1FFF, 0xE7FF, 0xFFFF,
  73.     0xFFFF, 0xC3FF, 0x0FFF, 0xFFFF,
  74.     0xFFFF, 0xF800, 0x7FFF, 0xFFFF,
  75.     };
  76.  
  77. /* the Image for the eyeball */
  78. struct Image EyeImage =
  79.     {
  80.     28, 0,      /* LeftEdge, TopEdge */
  81.     51, 28, 1,  /* Width, Height, Depth of the image data */
  82.     EyeData,    /* pointer to the start of the actual data */
  83.     0x1, 0x0,   /* PlanePick, PlaneOnOff */
  84.     };
  85.  
  86.  
  87. /* these are the IntuiText strings for the subitems */
  88. struct IntuiText subtext[] = 
  89. {
  90.     {
  91.     0, 1, JAM2,
  92.     0, 1,
  93.     &TestFont,
  94.     "SUB ITEM #0.0",
  95.     NULL,
  96.     },
  97.     /**/
  98.     {
  99.     0, 1, JAM2,
  100.     0, 1,
  101.     &TestFont,
  102.     "Text longer than the others!",
  103.     NULL, 
  104.     },
  105.     /**/
  106.     {
  107.     0, 1, JAM2,
  108.     0, 0,
  109.     &TestFont,
  110.     "SUB ITEM #0.2",
  111.     NULL, 
  112.     },
  113.     /**/
  114.     {
  115.     0, 1, JAM2,
  116.     0, 1,
  117.     &TestFont,
  118.     "Here's A TEST ITEM",
  119.     NULL, 
  120.     },
  121.     /**/
  122.     {
  123.     0, 1, JAM2,
  124.     0, 1,
  125.     &TestFont,
  126.     "Commodore-Amiga, Inc.",
  127.     NULL, 
  128.     },
  129.     /**/
  130.     {
  131.     0, 1, JAM2,
  132.     0, 0,
  133.     &TestFont,
  134.     "INTUITION",
  135.     NULL, 
  136.     },
  137.     /**/
  138.     {
  139.     0, 1, JAM2,
  140.     0, 1,
  141.     &TestFont,
  142.     "The Phantasm of Sleep",
  143.     NULL, 
  144.     },
  145.     /**/
  146.     {
  147.     0, 1, JAM2,
  148.     0, 1,
  149.     &TestFont,
  150.     "An Excursion",
  151.     NULL, 
  152.     },
  153.     /**/
  154.     {
  155.     0, 1, JAM2,
  156.     0, 0,
  157.     &TestFont,
  158.     "Of the Mind",
  159.     NULL, 
  160.     },
  161. };
  162.  
  163.  
  164. struct IntuiText OpenSubText[] = 
  165. {
  166.     /**/
  167.     {
  168.     0, 1, JAM2,
  169.     1, 1,
  170.     &TopazSixty,
  171.     "Font File",
  172.     NULL, 
  173.     },
  174.     /**/
  175.     {
  176.     0, 1, JAM2,
  177.     1, 1,
  178.     &TopazSixty,
  179.     "Document",
  180.     NULL, 
  181.     },
  182. };
  183.  
  184.  
  185. struct IntuiText ProjectItemText[] = 
  186. {
  187.     /**/
  188.     {
  189.     0, 1, JAM2,
  190.     1, 1,
  191.     &TopazSixty,
  192.     "Quit",
  193.     NULL, 
  194.     },
  195.     /**/
  196.     {
  197.     0, 1, JAM2,
  198.     1, 1,
  199.     &TopazSixty,
  200.     "Print As",
  201.     NULL, 
  202.     },
  203.     /**/
  204.     {
  205.     0, 1, JAM2,
  206.     1, 1,
  207.     &TopazSixty,
  208.     "Print",
  209.     NULL, 
  210.     },
  211.     /**/
  212.     {
  213.     0, 1, JAM2,
  214.     1, 1,
  215.     &TopazSixty,
  216.     "Save As",
  217.     NULL, 
  218.     },
  219.     /**/
  220.     {
  221.     0, 1, JAM2,
  222.     1, 1,
  223.     &TopazSixty,
  224.     "Save",
  225.     NULL, 
  226.     },
  227.     /**/
  228.     {
  229.     0, 1, JAM2,
  230.     1, 1,
  231.     &TopazSixty,
  232.     "Open",
  233.     NULL, 
  234.     },
  235.     /**/
  236.     {
  237.     0, 1, JAM2,
  238.     1, 1,
  239.     &TopazSixty,
  240.     "New",
  241.     NULL, 
  242.     },
  243. };
  244.  
  245.  
  246. /* these are the IntuiTexts for the items */
  247. struct IntuiText itemtext[] = 
  248. {
  249.     {
  250.     0, 1, JAM2,
  251.     CHECKWIDTH, 1,
  252.     &TestFont,
  253.     "NOT QUITE THE EYEBALL",
  254.     NULL, 
  255.     },
  256.     /**/
  257.     {
  258.     0, 1, JAM2,
  259.     CHECKWIDTH, 1,
  260.     &TestFont,
  261.     "ALMOST THE EYEBALL",
  262.     NULL, 
  263.     },
  264.     /**/
  265.     {
  266.     0, 1, JAM2,
  267.     CHECKWIDTH, 1,
  268.     &TestFont,
  269.     "NOT USED, REPLACED WITH EYE IMAGE",
  270.     NULL, 
  271.     },
  272.     /**/
  273.     {
  274.     0, 1, JAM2,
  275.     0, 1,
  276.     &TestFont,
  277.     "MENU ITEM #1.0",
  278.     NULL, 
  279.     },
  280.     /**/
  281.     {
  282.     0, 1, JAM2,
  283.     0, 1,
  284.     &TestFont,
  285.     "MENU ITEM #1.1",
  286.     NULL, 
  287.     },
  288.     /**/
  289.     {
  290.     0, 1, JAM2,
  291.     0, 1,
  292.     &TestFont,
  293.     "MENU ITEM #1.2",
  294.     NULL, 
  295.     },
  296.     /**/
  297.     {
  298.     0, 1, JAM2,
  299.     0, 1,
  300.     &TestFont,
  301.     "MENU ITEM #2.0",
  302.     NULL, 
  303.     },
  304.     /**/
  305.     {
  306.     0, 1, JAM2,
  307.     0, 1,
  308.     &TestFont,
  309.     "MENU ITEM #2.1",
  310.     NULL, 
  311.     },
  312.     /**/
  313.     {
  314.     0, 1, JAM2,
  315.     0, 1,
  316.     &TestFont,
  317.     "MENU ITEM #2.2",
  318.     NULL, 
  319.     },
  320. };
  321.  
  322.  
  323.  
  324. struct MenuItem OpenSubItems[] = 
  325.     {
  326.         /* test SubItem 0 */
  327.         {
  328.         NULL,           /* NextItem */
  329.         115, -5, 120, 9,        /* LeftEdge, TopEdge, Width, Height */
  330.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  331.         0,              /* MutualExclude */
  332.         &OpenSubText[1],        /* ItemFill */
  333.         NULL,           /* SelectFill */
  334.         NULL,           /* Command */
  335.         NULL,           /* SubItem of SubItems should be NULL */
  336.         NULL,           /* NextSelect */
  337.         },
  338.         /* test SubItem 1 */
  339.         {
  340.         &OpenSubItems[0],               /* NextItem */
  341.         115, 5, 120, 9, /* LeftEdge, TopEdge, Width, Height */
  342.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  343.         0,              /* MutualExclude */
  344.         &OpenSubText[0],        /* ItemFill */
  345.         NULL,           /* SelectFill */
  346.         NULL,           /* Command */
  347.         NULL,           /* SubItem of SubItems should be NULL */
  348.         NULL,           /* NextSelect */
  349.         },
  350.     };
  351.  
  352.  
  353. /* the SubItem declarations */
  354. struct MenuItem subitems[] = 
  355.     {
  356.         /* test SubItem 0 */
  357.         {
  358.         NULL,           /* NextItem */
  359.         145, 0, 224, 9, /* LeftEdge, TopEdge, Width, Height */
  360.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  361.         0,              /* MutualExclude */
  362.         &subtext[0],    /* ItemFill */
  363.         NULL,           /* SelectFill */
  364.         NULL,           /* Command */
  365.         NULL,           /* SubItem of SubItems should be NULL */
  366.         NULL,           /* NextSelect */
  367.         },
  368.         /* test SubItem 1 */
  369.         {
  370.         &subitems[0],           /* NextItem */
  371.         145, 9, 224, 9, /* LeftEdge, TopEdge, Width, Height */
  372.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  373.         0,              /* MutualExclude */
  374.         &subtext[1],    /* ItemFill */
  375.         NULL,           /* SelectFill */
  376.         NULL,           /* Command */
  377.         NULL,           /* SubItem of SubItems should be NULL */
  378.         NULL,           /* NextSelect */
  379.         },
  380.         /* test SubItem 2 */
  381.         {
  382.         &subitems[1],           /* NextItem */
  383.         145, 18, 224, 8,        /* LeftEdge, TopEdge, Width, Height */
  384.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  385.         0,              /* MutualExclude */
  386.         &subtext[2],    /* ItemFill */
  387.         NULL,           /* SelectFill */
  388.         NULL,           /* Command */
  389.         NULL,           /* SubItem of SubItems should be NULL */
  390.         NULL,           /* NextSelect */
  391.         },
  392.         /* test SubItem 3 */
  393.         {
  394.         NULL,           /* NextItem */
  395.         145, -5, 168, 11,       /* LeftEdge, TopEdge, Width, Height */
  396.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  397.         0,              /* MutualExclude */
  398.         &subtext[3],    /* ItemFill */
  399.         NULL,           /* SelectFill */
  400.         NULL,           /* Command */
  401.         NULL,           /* SubItem of SubItems should be NULL */
  402.         NULL,           /* NextSelect */
  403.         },
  404.         /* test SubItem 4 */
  405.         {
  406.         &subitems[3],           /* NextItem */
  407.         145, 6, 168, 11,        /* LeftEdge, TopEdge, Width, Height */
  408.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  409.         0,              /* MutualExclude */
  410.         &subtext[4],    /* ItemFill */
  411.         NULL,           /* SelectFill */
  412.         NULL,           /* Command */
  413.         NULL,           /* SubItem of SubItems should be NULL */
  414.         NULL,           /* NextSelect */
  415.         },
  416.         /* test SubItem 5 */
  417.         {
  418.         &subitems[4],           /* NextItem */
  419.         145, 17, 168, 10,       /* LeftEdge, TopEdge, Width, Height */
  420.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  421.         0,              /* MutualExclude */
  422.         &subtext[5],    /* ItemFill */
  423.         NULL,           /* SelectFill */
  424.         NULL,           /* Command */
  425.         NULL,           /* SubItem of SubItems should be NULL */
  426.         NULL,           /* NextSelect */
  427.         },
  428.         /* test SubItem 6 */
  429.         {
  430.         NULL,           /* NextItem */
  431.         145, -10, 104, 10,      /* LeftEdge, TopEdge, Width, Height */
  432.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  433.         0,              /* MutualExclude */
  434.         &subtext[6],    /* ItemFill */
  435.         NULL,           /* SelectFill */
  436.         NULL,           /* Command */
  437.         NULL,           /* SubItem of SubItems should be NULL */
  438.         NULL,           /* NextSelect */
  439.         },
  440.         /* test SubItem 7 */
  441.         {
  442.         &subitems[6],           /* NextItem */
  443.         145, 0, 104, 10,        /* LeftEdge, TopEdge, Width, Height */
  444.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  445.         0,              /* MutualExclude */
  446.         &subtext[7],    /* ItemFill */
  447.         NULL,           /* SelectFill */
  448.         NULL,           /* Command */
  449.         NULL,           /* SubItem of SubItems should be NULL */
  450.         NULL,           /* NextSelect */
  451.         },
  452.         /* test SubItem 8 */
  453.         {
  454.         &subitems[7],           /* NextItem */
  455.         145, 10, 104, 8,        /* LeftEdge, TopEdge, Width, Height */
  456.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  457.         0,              /* MutualExclude */
  458.         &subtext[8],    /* ItemFill */
  459.         NULL,           /* SelectFill */
  460.         NULL,           /* Command */
  461.         NULL,           /* SubItem of SubItems should be NULL */
  462.         NULL,           /* NextSelect */
  463.         },
  464.     };
  465.  
  466.  
  467. struct MenuItem items[] =
  468.     {
  469.         /* test MenuItem 0 */
  470.         {
  471.         NULL,           /* NextItem */
  472.         0, 0,           /* LeftEdge, TopEdge */
  473.         172 + CHECKWIDTH + COMMWIDTH + 15, 10,  /* Width, Height */
  474.         /* Flags */
  475.         ITEMENABLED | ITEMTEXT | HIGHCOMP | CHECKIT | CHECKED | COMMSEQ,
  476.         0x3,            /* MutualExclude first and second items */
  477.         &itemtext[0],   /* ItemFill */
  478.         NULL,           /* SelectFill */
  479.         'R',            /* Command */
  480.         NULL,           /* SubItem */
  481.         NULL,           /* NextSelect */
  482.         },
  483.         /* test MenuItem 1 */
  484.         {
  485.         &items[0],              /* NextItem */
  486.         0, 10,                  /* LeftEdge, TopEdge, Width, Height */
  487.         172 + CHECKWIDTH + COMMWIDTH + 15, 10,  /* Width, Height */
  488.         ITEMENABLED | ITEMTEXT | HIGHCOMP | CHECKIT | COMMSEQ, /* Flags */
  489.         0x4,            /* MutualExclude third item */
  490.         &itemtext[1],   /* ItemFill */
  491.         NULL,           /* SelectFill */
  492.         'J',            /* Command */
  493.         NULL,           /* SubItem */
  494.         NULL,           /* NextSelect */
  495.         },
  496.         /* test MenuItem 2 get the eyeball! */
  497.         {
  498.         &items[1],              /* NextItem */
  499.         0, 20,                  /* LeftEdge, TopEdge */
  500.         172 + CHECKWIDTH + COMMWIDTH + 15, 28,  /* Width, Height */
  501.         /* Flags:  note that ITEMTEXT is not set */
  502.         ITEMENABLED | HIGHCOMP | CHECKIT | COMMSEQ,
  503.         0x4,            /* MutualExclude third item */
  504.         &EyeImage,      /* ItemFill points to the Image for the Eye */
  505.         NULL,           /* SelectFill */
  506.         'M',            /* Command */
  507.         NULL,           /* SubItem */
  508.         NULL,           /* NextSelect */
  509.         },
  510.         /* test MenuItem 3 */
  511.         {
  512.         NULL,           /* NextItem */
  513.         -10, 0, 150, 10,        /* LeftEdge, TopEdge, Width, Height */
  514.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  515.         0,              /* MutualExclude */
  516.         &itemtext[3],   /* ItemFill */
  517.         NULL,           /* SelectFill */
  518.         NULL,           /* Command */
  519.         &subitems[2],   /* SubItem */
  520.         NULL,           /* NextSelect */
  521.         },
  522.         /* test MenuItem 4 */
  523.         {
  524.         &items[3],              /* NextItem */
  525.         -10, 10, 150, 10,       /* LeftEdge, TopEdge, Width, Height */
  526.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  527.         0,              /* MutualExclude */
  528.         &itemtext[4],   /* ItemFill */
  529.         NULL,           /* SelectFill */
  530.         NULL,           /* Command */
  531. /*???   &subitems[5],   /* SubItem */
  532.         NULL,   /* SubItem */
  533.         NULL,           /* NextSelect */
  534.         },
  535.         /* test MenuItem 5 */
  536.         {
  537.         &items[4],              /* NextItem */
  538.         -10, 20, 150, 10,       /* LeftEdge, TopEdge, Width, Height */
  539.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  540.         0,              /* MutualExclude */
  541.         &itemtext[5],   /* ItemFill */
  542.         NULL,           /* SelectFill */
  543.         NULL,           /* Command */
  544.         &subitems[8],   /* SubItem */
  545.         NULL,           /* NextSelect */
  546.         },
  547.         /* test MenuItem 6 */
  548.         {
  549.         NULL,           /* NextItem */
  550.         -20, 5, 112, 10,        /* LeftEdge, TopEdge, Width, Height */
  551.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  552.         0,              /* MutualExclude */
  553.         &itemtext[6],   /* ItemFill */
  554.         NULL,           /* SelectFill */
  555.         NULL,           /* Command */
  556.         NULL,           /* SubItem */
  557.         NULL,           /* NextSelect */
  558.         },
  559.         /* test MenuItem 7 */
  560.         {
  561.         &items[6],              /* NextItem */
  562.         105, 5, 112, 10,        /* LeftEdge, TopEdge, Width, Height */
  563.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  564.         0,              /* MutualExclude */
  565.         &itemtext[7],   /* ItemFill */
  566.         NULL,           /* SelectFill */
  567.         NULL,           /* Command */
  568.         NULL,           /* SubItem */
  569.         NULL,           /* NextSelect */
  570.         },
  571.         /* test MenuItem 8 */
  572.         {
  573.         &items[7],              /* NextItem */
  574.         0, 20, 112, 10, /* LeftEdge, TopEdge, Width, Height */
  575.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  576.         0,              /* MutualExclude */
  577.         &itemtext[8],   /* ItemFill */
  578.         NULL,           /* SelectFill */
  579.         NULL,           /* Command */
  580.         NULL,           /* SubItem */
  581.         NULL,           /* NextSelect */
  582.         },
  583.     };
  584.  
  585. /* ======================================================================== */
  586. /* === BookItems ========================================================== */
  587. /* ======================================================================== */
  588.  
  589. #define PROJECT_ITEM_COUNT      7
  590.  
  591. struct MenuItem ProjectItems[] =
  592.     {
  593.         {
  594.         NULL,           /* NextItem */
  595.         0, 2, 112, 10,  /* LeftEdge, TopEdge, Width, Height */
  596.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  597.         0,              /* MutualExclude */
  598.         &ProjectItemText[6],    /* ItemFill */
  599.         NULL,           /* SelectFill */
  600.         NULL,           /* Command */
  601.         NULL,           /* SubItem */
  602.         NULL,           /* NextSelect */
  603.         },
  604.  
  605.         {
  606.         &ProjectItems[0],               /* NextItem */
  607.         0, 12, 112, 10, /* LeftEdge, TopEdge, Width, Height */
  608.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  609.         0,              /* MutualExclude */
  610.         &ProjectItemText[5],    /* ItemFill */
  611.         NULL,           /* SelectFill */
  612.         NULL,           /* Command */
  613.         &OpenSubItems[1],               /* SubItem */
  614.         NULL,           /* NextSelect */
  615.         },
  616.  
  617.         {
  618.         &ProjectItems[1],               /* NextItem */
  619.         0, 22, 112, 10, /* LeftEdge, TopEdge, Width, Height */
  620.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  621.         0,              /* MutualExclude */
  622.         &ProjectItemText[4],    /* ItemFill */
  623.         NULL,           /* SelectFill */
  624.         NULL,           /* Command */
  625.         NULL,           /* SubItem */
  626.         NULL,           /* NextSelect */
  627.         },
  628.  
  629.         {
  630.         &ProjectItems[2],               /* NextItem */
  631.         0, 32, 112, 10, /* LeftEdge, TopEdge, Width, Height */
  632.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  633.         0,              /* MutualExclude */
  634.         &ProjectItemText[3],    /* ItemFill */
  635.         NULL,           /* SelectFill */
  636.         NULL,           /* Command */
  637.         NULL,           /* SubItem */
  638.         NULL,           /* NextSelect */
  639.         },
  640.  
  641.         {
  642.         &ProjectItems[3],               /* NextItem */
  643.         0, 42, 112, 10, /* LeftEdge, TopEdge, Width, Height */
  644.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  645.         0,              /* MutualExclude */
  646.         &ProjectItemText[2],    /* ItemFill */
  647.         NULL,           /* SelectFill */
  648.         NULL,           /* Command */
  649.         NULL,           /* SubItem */
  650.         NULL,           /* NextSelect */
  651.         },
  652.  
  653.         {
  654.         &ProjectItems[4],               /* NextItem */
  655.         0, 52, 112, 10, /* LeftEdge, TopEdge, Width, Height */
  656.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  657.         0,              /* MutualExclude */
  658.         &ProjectItemText[1],    /* ItemFill */
  659.         NULL,           /* SelectFill */
  660.         NULL,           /* Command */
  661.         NULL,           /* SubItem */
  662.         NULL,           /* NextSelect */
  663.         },
  664.  
  665.         {
  666.         &ProjectItems[5],               /* NextItem */
  667.         0, 62, 112, 10, /* LeftEdge, TopEdge, Width, Height */
  668.         ITEMENABLED | ITEMTEXT | HIGHCOMP, /* Flags */
  669.         0,              /* MutualExclude */
  670.         &ProjectItemText[0],    /* ItemFill */
  671.         NULL,           /* SelectFill */
  672.         NULL,           /* Command */
  673.         NULL,           /* SubItem */
  674.         NULL,           /* NextSelect */
  675.         },
  676.  
  677.     };
  678.  
  679.  
  680.  
  681. /* ======================================================================== */
  682. /* ======================================================================== */
  683. /* ======================================================================== */
  684.  
  685. /* here are the actual Menus which point to all of the above */
  686. struct Menu menus[2][7] =
  687. {
  688.     {
  689.         {
  690.         &menus[0][1],   /* NextMenu */
  691.         3, 0,           /* LeftEdge, TopEdge */
  692.         97, 0,          /* Width, Height */
  693.         MENUENABLED,    /* Flags */
  694.         "Colors",       /* MenuName */
  695.         &items[5],      /* FirstItem */
  696.         0, 0, 0, 0,     /* system variables */
  697.         },
  698.         /**/
  699.         {
  700.         &menus[0][2],   /* NextMenu */
  701.         100, 0,         /* LeftEdge, TopEdge */
  702.         100, 0,         /* Width, Height */
  703.         MENUENABLED,    /* Flags */
  704.         "Special",      /* MenuName */
  705.         &items[2],      /* FirstItem */
  706.         0, 0, 0, 0,     /* system variables */
  707.         },
  708.         /**/
  709.         {
  710.         NULL,           /* NextMenu */
  711.         200, 0,         /* LeftEdge, TopEdge */
  712.         100, 0,         /* Width, Height */
  713.         MENUENABLED,    /* Flags */
  714.         "Brushes",      /* MenuName */
  715.         &items[8],      /* FirstItem */
  716.         0, 0, 0, 0,     /* system variables */
  717.         },
  718.     },
  719.     /* for the second set of Menus, shuffle up the data a little */
  720.     {
  721.         {
  722.         &menus[1][1],   /* NextMenu */
  723.         10, 0,          /* LeftEdge, TopEdge */
  724.         97, 0,          /* Width, Height */
  725.         MENUENABLED,    /* Flags */
  726.         "Project",      /* MenuName */
  727.         &ProjectItems[PROJECT_ITEM_COUNT - 1],  /* FirstItem */
  728.         0, 0, 0, 0,     /* system variables */
  729.         },
  730.         /**/
  731.         {
  732.         &menus[1][2],   /* NextMenu */
  733.         110, 0,         /* LeftEdge, TopEdge */
  734.         70, 0,          /* Width, Height */
  735.         MENUENABLED,    /* Flags */
  736.         "Edit", /* MenuName */
  737.         &items[2],      /* FirstItem */
  738.         0, 0, 0, 0,     /* system variables */
  739.         },
  740.         /**/
  741.         {
  742.         &menus[1][3],           /* NextMenu */
  743.         180, 0,         /* LeftEdge, TopEdge */
  744.         90, 0,          /* Width, Height */
  745.         MENUENABLED,    /* Flags */
  746.         "Format",       /* MenuName */
  747.         &items[2],      /* FirstItem */
  748.         0, 0, 0, 0,     /* system variables */
  749.         },
  750.         /**/
  751.         {
  752.         &menus[1][4],           /* NextMenu */
  753.         270, 0,         /* LeftEdge, TopEdge */
  754.         80, 0,          /* Width, Height */
  755.         MENUENABLED,    /* Flags */
  756.         "Fonts",        /* MenuName */
  757.         &items[2],      /* FirstItem */
  758.         0, 0, 0, 0,     /* system variables */
  759.         },
  760.         /**/
  761.         {
  762.         NULL,           /* NextMenu */
  763.         350, 0,         /* LeftEdge, TopEdge */
  764.         70, 0,          /* Width, Height */
  765.         MENUENABLED,    /* Flags */
  766.         "Help",         /* MenuName */
  767.         &items[2],      /* FirstItem */
  768.         0, 0, 0, 0,     /* system variables */
  769.         },
  770.     },
  771. };
  772.  
  773. /* ======================================================================== */
  774. /* ======================================================================== */
  775. /* ======================================================================== */
  776.  
  777.